import {
    reqspecslist,
    reqspecscount
} from "../../http/api"

/*分页
    1.绘制分页组件
    2.初始化数据 state getters mutations
    3.进来页面，要 请列表+请总数

*/
/*
state:数据
getters：导出数据
mutations:直接修改state 同步 commit
actions:逻辑、异步，  异步   dispatch ,不可以直接修改state
*/
let state = {
    //3.1列表数据
    list: [],
    //分页的总数
    total: 0,
    //一页的数量
    size: 2,
    //当前页
    page: 1
}

let getters = {
    //3.2导出list
    list(state) {
        return state.list
    },
    //导出总数
    total(state) {
        return state.total
    },
    //导出一页的数量
    size(state) {
        return state.size
    },

}

let mutations = {
    //3.3修改list
    changeList(state, list) {
        state.list = list;
    },
    //3.3修改total
    changetotal(state, total) {
        state.total = total;
    },
    //3.3修改size
    changesize(state, size) {
        state.size = size;
    },
    //3.3修改page
    changepage(state, page) {
        state.page = page;
    },

}

let actions = {
    //3.4 list逻辑
    reqList({
        dispatch
    }) {
        //请求列表
        dispatch("reqSpecsList")
            //请求总数
        dispatch("reqTotal")

    },
    //请求列表
    reqSpecsList({
        commit,
        dispatch,
        state: {
            size,
            page
        }
    }) {
        //请求列表
        reqspecslist({
            page,
            size
        }).then(res => {
            if (res.data.code == 200) {

                // 如果取到了空数组，当前页码不是第1页，需要取上一页的数据
                let arr = res.data.list ? res.data.list : []
                if (arr.length == 0 && page != 1) {
                    //通知mutations修改page 
                    commit("changepage", page - 1)
                        //请求列表
                    dispatch("reqSpecsList")
                    return
                }


                //修改list
                commit("changeList", arr)
            }
        })

    },
    //请求总数
    reqTotal({
        commit
    }) {
        reqspecscount().then(res => {
            if (res.data.code == 200) {
                //修改总数
                commit("changetotal", res.data.list[0].total)
            }
        })
    },
    //修改了页码
    changePage({
        commit,
        dispatch
    }, page) {
        // 修改page
        commit("changepage", page)
            // 请列表
        dispatch("reqSpecsList")
    }

}

export default {
    state,
    getters,
    mutations,
    actions,
    //命名空间
    namespaced: true
}